package object2;

import java.lang.Override;

/**
 * 面向对象编程（中级部分）练习
 */
public class Object2Exercise10 {

    public static void main(String[] args) {
        /*
            现有people类，有 run eat 方法，Students类继承了people类，并重写了 run 方法
            自定义了 study 方法，试写出对象向上转型和向下转型的代码，并写出各自都可以调用哪些方法，并写出方法输出什么
         */
        //向上转型 父类的引用指向子类对象
        People people = new Students();
        //可以调用父类中的所有成员(须遵守访问权限)
        //不能调用子类中特有成员
        people.eat();
        people.run();
//        people.study();//报错

        //向下转型 把指向子类对象的父类引用，转成指向子类对象的子类引用
        Students students = (Students)people;
        //此时可以访问子类Students的方法
        students.eat();
        students.run();
        students.study();

    }
}

class People {

    public void run() {
        System.out.println("people run");
    }

    public void eat() {
        System.out.println("people eat");
    }
}

class Students extends People {

    public void study() {
        System.out.println("students study");
    }

    @Override
    public void run() {
        System.out.println("students run");
    }
}
